interface

TIP

接口定义规范结构

interface Person {
  name: string;
  score: number;
  greet(phrase: string): void;
}
let user1: Person = {
  name: "Aeroxian",
  score: 100,
  greet(phrase: string) {
    console.log("Greet: " + phrase);
  },
};

class 实现 interface

TIP

接口中可以使用readonly修饰

interface Greetable {
  readonly name: string;
  greet(phrase: string): void;
}

 


class Person implements Greetable {
  name: string;
  score: number = 100;

  constructor(n: string) {
    this.name = n;
  }

  greet(phrase:string){
      console.log(phrase+this.name);
      
  }
}
let user1: Greetable = new Person("Aeroxian");
user1.greet('Hi there,I\'m ');
 


Interface as Function Type⭐

// type AddFn = (number1:number,number2:number)=>number;
interface AddFn{
    (number1:number,number2:number):number;
}

let add:AddFn;
add = (number1,number2)=>number1+number2;

console.log(add(1,2));
 
 







optional properties and paramter ⭐

interface Greetable {
  readonly name?: string;
  greet(phrase: string): void;
}

class Person implements Greetable {
  name?: string;
  constructor(n?: string) {
    if (n) {
      this.name = n;
    }
  }
  greet(phrase: string) {
    if (this.name) {
        console.log(phrase+this.name);
    } else {
      console.log("Hi!");
    }
  }
}

let user1: Greetable = new Person();
user1.greet('Hi there,I\'m '); // 输出: Hi!